package interceptor

import (
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	"net/http"
)

// LoginHandler 登录校验中间件，务必保证首字母大写，这样才能使的该方法全局适用。
// 调用方法: ginServer.GET("/user/get", interceptor.LoginHandler(), func(context *gin.Context)
func LoginHandler() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 定义一个结构体来绑定 JSON 请求体
		var requestBody struct {
			Token string `json:"token"`
		}

		// 绑定 JSON 请求体到结构体
		if err := c.BindJSON(&requestBody); err != nil {
			logrus.Errorf("请求体解析失败: %v", err)
			c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": "invalid request body"})
			return
		}

		// 获取 token 并验证
		token := requestBody.Token
		if token != "123" {
			logrus.Errorf("token校验不通过！！！")
			c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "unauthorized"})
			return
		}
		// token校验通过，解析用户的信息
		c.Set("userID", "123456")
		// 放行
		c.Next()
		logrus.Infof("token校验通过！！！")
		return
	}
}
